/*-*-C-*-
 * Gadget definitions for Windows CSE
 */

#include "resed.h"
#include "main.h"

#include "wimp.h"
#include "resformat.h"
#include "newmsgs.h"

#include "format.h"
#include "relocate.h"
#include "windowedit.h"
#include "gadgdefs.h"
#include "gadget.h"
#include "icondefs.h"



#define  HDR_SIZE         sizeof (GadgetTemplateHeaderRec)
#define  HDR_FIND(field)  offsetof (GadgetTemplateHeaderRec, field)


/* ------------------- action button gadget definition ------------------- */

#define  AB_FIND(field)   offsetof (ActionButtonTemplateRec, field)

static RefDefRec abrefs[] =
{
    { REF_MSG, AB_FIND(text), TRUE },
    { REF_STR, AB_FIND(clickshow), FALSE },
    { REF_END }
};

static MandAssStrFldRec abf1 =
    { I_ACTIONBUTT_TEXT, I_ACTIONBUTT_TEXTMAX,
      I_ACTIONBUTT_TEXTMAX_ADJ_UP, I_ACTIONBUTT_TEXTMAX_ADJ_DOWN,
      HDR_SIZE + AB_FIND(text), HDR_SIZE + AB_FIND(maxtextlen) };
static OptConstStrFldRec abf2 =
    { I_ACTIONBUTT_SHOW, I_ACTIONBUTT_SHOW_OBJECT,
      HDR_SIZE + AB_FIND(clickshow) };
static MandEventFldRec abf3 =
    { I_ACTIONBUTT_DELIVER_DEFAULT, I_ACTIONBUTT_DELIVER_OTHER,
      I_ACTIONBUTT_DELIVER_EVENT,
      HDR_SIZE + AB_FIND(event) };
static FlagFldRec abf4 =
    { I_ACTIONBUTT_BUTTON_DEFAULT, ACTIONBUTTON_ISDEFAULT, TRUE };
static FlagFldRec abf5 =
    { I_ACTIONBUTT_BUTTON_CANCEL, ACTIONBUTTON_ISCANCEL, TRUE };
static FlagFldRec abf6 =
    { I_ACTIONBUTT_BUTTON_LOCAL, ACTIONBUTTON_ISLOCAL, TRUE };
static FlagFldRec abf7 =
    { I_ACTIONBUTT_SHOW_TRANSIENT, ACTIONBUTTON_CLICKSHOWTRANSIENT, TRUE };

static FieldDefRec abfields[] =
{
    { FLD_MAND_ASS_STR,     (FldDefPtr) &abf1 },
    { FLD_OPT_CONST_STR,    (FldDefPtr) &abf2 },
    { FLD_MAND_EVENT,       (FldDefPtr) &abf3 },
    { FLD_FLAG,             (FldDefPtr) &abf4 },
    { FLD_FLAG,             (FldDefPtr) &abf5 },
    { FLD_FLAG,             (FldDefPtr) &abf6 },
    { FLD_FLAG,             (FldDefPtr) &abf7 },
    { FLD_END, NULL}
};

static FadeClickRec aba1 = { I_ACTIONBUTT_DELIVER_EVENT };
static UnFadeClickRec aba2 = { I_ACTIONBUTT_DELIVER_EVENT };
static AdjustClickRec aba3 =
    { I_ACTIONBUTT_TEXT, I_ACTIONBUTT_TEXTMAX, TRUE,  1, 10 };
static AdjustClickRec aba4 =
    { I_ACTIONBUTT_TEXT, I_ACTIONBUTT_TEXTMAX, FALSE, 1, 10 };
static ToggleFadeClickRec aba5 = { I_ACTIONBUTT_SHOW_OBJECT };
static ToggleFadeClickRec aba6 = { I_ACTIONBUTT_SHOW_TRANSIENT };

static ClickDefRec abclicks[] =
{
    { I_ACTIONBUTT_DELIVER_DEFAULT,  ACT_RADIO },
    { I_ACTIONBUTT_DELIVER_OTHER,    ACT_RADIO },
    { I_ACTIONBUTT_DELIVER_DEFAULT,  ACT_FADE,    (ClickParamsPtr) &aba1 },
    { I_ACTIONBUTT_DELIVER_OTHER,    ACT_UNFADE,  (ClickParamsPtr) &aba2 },
    { I_ACTIONBUTT_TEXTMAX_ADJ_UP,   ACT_ADJUST,  (ClickParamsPtr) &aba3 },
    { I_ACTIONBUTT_TEXTMAX_ADJ_DOWN, ACT_ADJUST,  (ClickParamsPtr) &aba4 },
    { I_ACTIONBUTT_SHOW,          ACT_TOGGLEFADE, (ClickParamsPtr) &aba5 },
    { I_ACTIONBUTT_SHOW,          ACT_TOGGLEFADE, (ClickParamsPtr) &aba6 },
                                { 0, ACT_END }
};

static SetOpt2DropRec abp1 =
    { I_ACTIONBUTT_SHOW_OBJECT, I_ACTIONBUTT_SHOW,
      I_ACTIONBUTT_SHOW_TRANSIENT };

static DropDetailsRec abd1 =
    { OBJECT_DROP, -1, DROP_SETOPT2, (DropParamsPtr) &abp1 };

static DropDefRec abdrops[] =
{
    { I_ACTIONBUTT_SHOW,        &abd1 },
    { I_ACTIONBUTT_SHOW_OBJECT, &abd1 },
    {-2}
};


/* ------------------- option button gadget definition ------------------- */

#define  OB_FIND(field)   offsetof (OptionButtonTemplateRec, field)

static RefDefRec obrefs[] =
{
    { REF_MSG, OB_FIND(label), TRUE },
    { REF_END }
};

static MandAssStrFldRec obf1 =
    { I_OPTIONBUTT_TEXT, I_OPTIONBUTT_TEXTMAX,
      I_OPTIONBUTT_TEXTMAX_ADJ_UP, I_OPTIONBUTT_TEXTMAX_ADJ_DOWN,
      HDR_SIZE + OB_FIND(label), HDR_SIZE + OB_FIND(maxlabellen) };
static OptEventFldRec obf2 =
    { I_OPTIONBUTT_DELIVER_DEFAULT,
      I_OPTIONBUTT_DELIVER_OTHER,
      I_OPTIONBUTT_DELIVER_NONE,
      I_OPTIONBUTT_DELIVER_EVENT,
      HDR_SIZE + OB_FIND(event), OPTIONBUTTON_GENERATEEVENT };
static FlagFldRec obf3 =
    { I_OPTIONBUTT_SELECTED, OPTIONBUTTON_SELECTED, TRUE };

static FieldDefRec obfields[] =
{
    { FLD_MAND_ASS_STR,     (FldDefPtr) &obf1 },
    { FLD_OPT_EVENT,        (FldDefPtr) &obf2 },
    { FLD_FLAG,             (FldDefPtr) &obf3 },
    { FLD_END, NULL}
};

static FadeClickRec oba1 = { I_OPTIONBUTT_DELIVER_EVENT };
static AdjustClickRec oba2 =
    { I_OPTIONBUTT_TEXT, I_OPTIONBUTT_TEXTMAX, TRUE,  1, 10 };
static AdjustClickRec oba3 =
    { I_OPTIONBUTT_TEXT, I_OPTIONBUTT_TEXTMAX, FALSE, 1, 10 };

static ClickDefRec obclicks[] =
{
    { I_OPTIONBUTT_DELIVER_DEFAULT,  ACT_RADIO },
    { I_OPTIONBUTT_DELIVER_NONE,     ACT_RADIO },
    { I_OPTIONBUTT_DELIVER_OTHER,    ACT_RADIO },
    { I_OPTIONBUTT_DELIVER_DEFAULT,  ACT_FADE,    (ClickParamsPtr) &oba1 },
    { I_OPTIONBUTT_DELIVER_NONE,     ACT_FADE,    (ClickParamsPtr) &oba1 },
    { I_OPTIONBUTT_DELIVER_OTHER,    ACT_UNFADE,  (ClickParamsPtr) &oba1 },
    { I_OPTIONBUTT_TEXTMAX_ADJ_UP,   ACT_ADJUST,  (ClickParamsPtr) &oba2 },
    { I_OPTIONBUTT_TEXTMAX_ADJ_DOWN, ACT_ADJUST,  (ClickParamsPtr) &oba3 },
                                { 0, ACT_END }
};

static DropDefRec obdrops[] =
{
    {-2}
};


/* -------------------- labelled box gadget definition ------------------- */

#define  BX_FIND(field)   offsetof (LabelledBoxTemplateRec, field)

static RefDefRec bxrefs[] =
{
    { REF_STRORMSG, BX_FIND(label), TRUE, LABELLEDBOX_SPRITE, 0 },
    { REF_END }
};

static FlagFldRec bxf1 =
    { I_LABELLEDBOX_FILLED, LABELLEDBOX_SPRITEISFILLED, TRUE };

static FieldDefRec bxfields[] =
{
    { FLD_FLAG,       (FldDefPtr) &bxf1 },
    { FLD_END, NULL}
};

static FadeClickRec bxa1 = { I_LABELLEDBOX_SPRITE };
static FadeClickRec bxa2 = { I_LABELLEDBOX_FILLED };
static UnFadeClickRec bxa3 = { I_LABELLEDBOX_TEXT };

static ClickDefRec bxclicks[] =
{
    { I_LABELLEDBOX_ISTEXT,          ACT_RADIO },
    { I_LABELLEDBOX_ISTEXT,          ACT_FADE,    (ClickParamsPtr) &bxa1 },
    { I_LABELLEDBOX_ISTEXT,          ACT_FADE,    (ClickParamsPtr) &bxa2 },
    { I_LABELLEDBOX_ISTEXT,          ACT_UNFADE,  (ClickParamsPtr) &bxa3 },
    { I_LABELLEDBOX_ISSPRITE,        ACT_RADIO },
    { I_LABELLEDBOX_ISSPRITE,        ACT_FADE,    (ClickParamsPtr) &bxa3 },
    { I_LABELLEDBOX_ISSPRITE,        ACT_UNFADE,  (ClickParamsPtr) &bxa1 },
    { I_LABELLEDBOX_ISSPRITE,        ACT_UNFADE,  (ClickParamsPtr) &bxa2 },
                                { 0, ACT_END }
};

static DropDefRec bxdrops[] =
{
    {-2}
};


/* ----------------------- label gadget definition ----------------------- */

#define  LB_FIND(field)   offsetof (LabelTemplateRec, field)

static RefDefRec lbrefs[] =
{
    { REF_MSG, LB_FIND(label), TRUE },
    { REF_END }
};

static MandConstStrFldRec lbf1 =
    { I_LABEL_TEXT, HDR_SIZE + LB_FIND(label) };
static BitsFldRec lbf2 =
    { I_LABEL_JUSTIFY_LEFT, LABEL_JUSTIFICATION, LABEL_LEFTJUSTIFY };
static BitsFldRec lbf3 =
    { I_LABEL_JUSTIFY_CENTRE, LABEL_JUSTIFICATION, LABEL_CENTRED };
static BitsFldRec lbf4 =
    { I_LABEL_JUSTIFY_RIGHT, LABEL_JUSTIFICATION, LABEL_RIGHTJUSTIFY };
static FlagFldRec lbf5 =
    { I_LABEL_BORDER, LABEL_NOBOX, FALSE };

static FieldDefRec lbfields[] =
{
    { FLD_MAND_CONST_STR,   (FldDefPtr) &lbf1 },
    { FLD_BITS,             (FldDefPtr) &lbf2 },
    { FLD_BITS,             (FldDefPtr) &lbf3 },
    { FLD_BITS,             (FldDefPtr) &lbf4 },
    { FLD_FLAG,             (FldDefPtr) &lbf5 },
    { FLD_END, NULL}
};

static ClickDefRec lbclicks[] =
{
    { I_LABEL_JUSTIFY_LEFT,     ACT_RADIO },
    { I_LABEL_JUSTIFY_CENTRE,   ACT_RADIO },
    { I_LABEL_JUSTIFY_RIGHT,    ACT_RADIO },
                           { 0, ACT_END }
};

static DropDefRec lbdrops[] =
{
    {-2}
};


/* -------------------- radio button gadget definition ------------------- */

#define  RB_FIND(field)   offsetof (RadioButtonTemplateRec, field)

static RefDefRec rbrefs[] =
{
    { REF_MSG, RB_FIND(label), TRUE },
    { REF_END }
};

static MandAssStrFldRec rbf1 =
    { I_RADIOBUTT_TEXT, I_RADIOBUTT_TEXTMAX,
      I_RADIOBUTT_TEXTMAX_ADJ_UP, I_RADIOBUTT_TEXTMAX_ADJ_DOWN,
      HDR_SIZE + RB_FIND(label), HDR_SIZE + RB_FIND(maxlabellen) };
static OptEventFldRec rbf2 =
    { I_RADIOBUTT_DELIVER_DEFAULT,
      I_RADIOBUTT_DELIVER_OTHER,
      I_RADIOBUTT_DELIVER_NONE,
      I_RADIOBUTT_DELIVER_EVENT,
      HDR_SIZE + RB_FIND(event), RADIOBUTTON_GENERATESTATECHANGED };
static FlagFldRec rbf3 =
    { I_RADIOBUTT_SELECTED, RADIOBUTTON_ON, TRUE };
static IntegerFldRec rbf4 =
    { I_RADIOBUTT_GROUP, HDR_SIZE + RB_FIND(groupnumber), FALSE };

static FieldDefRec rbfields[] =
{
    { FLD_MAND_ASS_STR,     (FldDefPtr) &rbf1 },
    { FLD_OPT_EVENT,        (FldDefPtr) &rbf2 },
    { FLD_FLAG,             (FldDefPtr) &rbf3 },
    { FLD_INTEGER,          (FldDefPtr) &rbf4 },
    { FLD_END, NULL}
};

static FadeClickRec rba1 = { I_RADIOBUTT_DELIVER_EVENT };
static AdjustClickRec rba2 =
    { I_RADIOBUTT_TEXT, I_RADIOBUTT_TEXTMAX, TRUE,  1, 10 };
static AdjustClickRec rba3 =
    { I_RADIOBUTT_TEXT, I_RADIOBUTT_TEXTMAX, FALSE, 1, 10 };

static ClickDefRec rbclicks[] =
{
    { I_RADIOBUTT_DELIVER_DEFAULT,  ACT_RADIO },
    { I_RADIOBUTT_DELIVER_NONE,     ACT_RADIO },
    { I_RADIOBUTT_DELIVER_OTHER,    ACT_RADIO },
    { I_RADIOBUTT_DELIVER_DEFAULT,  ACT_FADE,    (ClickParamsPtr) &rba1 },
    { I_RADIOBUTT_DELIVER_NONE,     ACT_FADE,    (ClickParamsPtr) &rba1 },
    { I_RADIOBUTT_DELIVER_OTHER,    ACT_UNFADE,  (ClickParamsPtr) &rba1 },
    { I_RADIOBUTT_TEXTMAX_ADJ_UP,   ACT_ADJUST,  (ClickParamsPtr) &rba2 },
    { I_RADIOBUTT_TEXTMAX_ADJ_DOWN, ACT_ADJUST,  (ClickParamsPtr) &rba3 },
                               { 0, ACT_END }
};

static DropDefRec rbdrops[] =
{
    {-2}
};


/* ---------------------- display gadget definition ---------------------- */

#define  DF_FIND(field)   offsetof (DisplayFieldTemplateRec, field)

static RefDefRec dfrefs[] =
{
    { REF_MSG, DF_FIND(text), TRUE },
    { REF_END }
};

static MandAssStrFldRec dff1 =
    { I_DISPLAY_TEXT, I_DISPLAY_TEXTMAX,
      I_DISPLAY_TEXTMAX_ADJ_UP, I_DISPLAY_TEXTMAX_ADJ_DOWN,
      HDR_SIZE + DF_FIND(text), HDR_SIZE + DF_FIND(maxtextlen) };
static BitsFldRec dff2 =
    { I_DISPLAY_JUSTIFY_LEFT,
      DISPLAYFIELD_JUSTIFICATION, DISPLAYFIELD_LEFTJUSTIFY };
static BitsFldRec dff3 =
    { I_DISPLAY_JUSTIFY_CENTRE,
      DISPLAYFIELD_JUSTIFICATION, DISPLAYFIELD_CENTRED };
static BitsFldRec dff4 =
    { I_DISPLAY_JUSTIFY_RIGHT,
      DISPLAYFIELD_JUSTIFICATION, DISPLAYFIELD_RIGHTJUSTIFY };

static FieldDefRec dffields[] =
{
    { FLD_MAND_ASS_STR,     (FldDefPtr) &dff1 },
    { FLD_BITS,             (FldDefPtr) &dff2 },
    { FLD_BITS,             (FldDefPtr) &dff3 },
    { FLD_BITS,             (FldDefPtr) &dff4 },
    { FLD_END, NULL}
};

static AdjustClickRec dfa1 =
    { I_DISPLAY_TEXT, I_DISPLAY_TEXTMAX, TRUE,  1, 10 };
static AdjustClickRec dfa2 =
    { I_DISPLAY_TEXT, I_DISPLAY_TEXTMAX, FALSE, 1, 10 };

static ClickDefRec dfclicks[] =
{
    { I_DISPLAY_TEXTMAX_ADJ_UP,   ACT_ADJUST,  (ClickParamsPtr) &dfa1 },
    { I_DISPLAY_TEXTMAX_ADJ_DOWN, ACT_ADJUST,  (ClickParamsPtr) &dfa2 },
    { I_DISPLAY_JUSTIFY_LEFT,     ACT_RADIO },
    { I_DISPLAY_JUSTIFY_CENTRE,   ACT_RADIO },
    { I_DISPLAY_JUSTIFY_RIGHT,    ACT_RADIO },
                             { 0, ACT_END }
};

static DropDefRec dfdrops[] =
{
    {-2}
};


/* ------------------ writable field gadget definition ------------------- */

#define  WF_FIND(field)   offsetof (WritableFieldTemplateRec, field)

static RefDefRec wfrefs[] =
{
    { REF_MSG, WF_FIND(text), TRUE },
    { REF_MSG, WF_FIND(allowable), FALSE },
    { REF_END }
};

static MandAssStrFldRec wff1 =
    { I_WRITABLE_TEXT, I_WRITABLE_TEXTMAX,
      I_WRITABLE_TEXTMAX_ADJ_UP, I_WRITABLE_TEXTMAX_ADJ_DOWN,
      HDR_SIZE + WF_FIND(text), HDR_SIZE + WF_FIND(maxtextlen) };
static BitsFldRec wff2 =
    { I_WRITABLE_JUSTIFY_LEFT,
      WRITABLEFIELD_JUSTIFICATION, WRITABLEFIELD_LEFTJUSTIFY };
static BitsFldRec wff3 =
    { I_WRITABLE_JUSTIFY_CENTRE,
      WRITABLEFIELD_JUSTIFICATION, WRITABLEFIELD_CENTRED };
static BitsFldRec wff4 =
    { I_WRITABLE_JUSTIFY_RIGHT,
      WRITABLEFIELD_JUSTIFICATION, WRITABLEFIELD_RIGHTJUSTIFY };
static AllowableFldRec wff5 =
    { I_WRITABLE_HASALLOWED,
      I_WRITABLE_ALLOWED_ALPHA_LC, I_WRITABLE_ALLOWED_ALPHA_UC,
      I_WRITABLE_ALLOWED_NUMERIC,
      I_WRITABLE_ALLOWED_OTHER, I_WRITABLE_ALLOWED,
      I_WRITABLE_ALLOWEDMAX,
      I_WRITABLE_ALLOWEDMAX_ADJ_UP, I_WRITABLE_ALLOWEDMAX_ADJ_DOWN,
      HDR_SIZE + WF_FIND(allowable), HDR_SIZE + WF_FIND(maxallowablelen) };
static LinkFldRec wff6 =
    { I_WRITABLE_BEFORE, I_WRITABLE_BEFORE_OBJECT,
      HDR_SIZE + WF_FIND(before) };
static LinkFldRec wff7 =
    { I_WRITABLE_AFTER, I_WRITABLE_AFTER_OBJECT,
      HDR_SIZE + WF_FIND(after) };
static FlagFldRec wff8 =
    { I_WRITABLE_DELIVEREVENTS, WRITABLEFIELD_GENERATEVALUECHANGED, TRUE };
static FlagFldRec wff9 =
    { I_WRITABLE_PASSWORD, WRITABLEFIELD_PASSWORD, TRUE };

static FieldDefRec wffields[] =
{
    { FLD_MAND_ASS_STR,     (FldDefPtr) &wff1 },
    { FLD_BITS,             (FldDefPtr) &wff2 },
    { FLD_BITS,             (FldDefPtr) &wff3 },
    { FLD_BITS,             (FldDefPtr) &wff4 },
    { FLD_ALLOWABLE,        (FldDefPtr) &wff5 },
    { FLD_LINK,             (FldDefPtr) &wff6 },
    { FLD_LINK,             (FldDefPtr) &wff7 },
    { FLD_FLAG,             (FldDefPtr) &wff8 },
    { FLD_FLAG,             (FldDefPtr) &wff9 },
    { FLD_END, NULL}
};

static AdjustClickRec wfa1 =
    { I_WRITABLE_TEXT, I_WRITABLE_TEXTMAX, TRUE,  1, 10 };
static AdjustClickRec wfa2 =
    { I_WRITABLE_TEXT, I_WRITABLE_TEXTMAX, FALSE, 1, 10 };
static AdjustClickRec wfa3 =
    { I_WRITABLE_ALLOWED, I_WRITABLE_ALLOWEDMAX, TRUE,  1, 10 };
static AdjustClickRec wfa4 =
    { I_WRITABLE_ALLOWED, I_WRITABLE_ALLOWEDMAX, FALSE, 1, 10 };
static AllowClickRec wfa5 =
    { I_WRITABLE_ALLOWED_ALPHA_LC, I_WRITABLE_ALLOWED_ALPHA_UC,
      I_WRITABLE_ALLOWED_NUMERIC,
      I_WRITABLE_ALLOWED_OTHER, I_WRITABLE_ALLOWED };
static ToggleFadeClickRec wfa6 = { I_WRITABLE_ALLOWED };
static ToggleFadeClickRec wfa7 = { I_WRITABLE_BEFORE_OBJECT };
static ToggleFadeClickRec wfa8 = { I_WRITABLE_AFTER_OBJECT };

static ClickDefRec wfclicks[] =
{
    { I_WRITABLE_TEXTMAX_ADJ_UP,      ACT_ADJUST,  (ClickParamsPtr) &wfa1 },
    { I_WRITABLE_TEXTMAX_ADJ_DOWN,    ACT_ADJUST,  (ClickParamsPtr) &wfa2 },
    { I_WRITABLE_JUSTIFY_LEFT,        ACT_RADIO },
    { I_WRITABLE_JUSTIFY_CENTRE,      ACT_RADIO },
    { I_WRITABLE_JUSTIFY_RIGHT,       ACT_RADIO },
    { I_WRITABLE_ALLOWEDMAX_ADJ_UP,   ACT_ADJUST,  (ClickParamsPtr) &wfa3 },
    { I_WRITABLE_ALLOWEDMAX_ADJ_DOWN, ACT_ADJUST,  (ClickParamsPtr) &wfa4 },
    { I_WRITABLE_HASALLOWED,          ACT_ALLOW,   (ClickParamsPtr) &wfa5 },
    { I_WRITABLE_ALLOWED_OTHER,    ACT_TOGGLEFADE, (ClickParamsPtr) &wfa6 },
    { I_WRITABLE_BEFORE,           ACT_TOGGLEFADE, (ClickParamsPtr) &wfa7 },
    { I_WRITABLE_AFTER,            ACT_TOGGLEFADE, (ClickParamsPtr) &wfa8 },
                                 { 0, ACT_END }
};

static SetOptDropRec wfp1 = { I_WRITABLE_BEFORE_OBJECT, I_WRITABLE_BEFORE };
static SetOptDropRec wfp2 = { I_WRITABLE_AFTER_OBJECT, I_WRITABLE_AFTER };

static DropDetailsRec wfd1 =
    { GADGET_DROP, 0, DROP_SETOPT, (DropParamsPtr) &wfp1 };
static DropDetailsRec wfd2 =
    { GADGET_DROP, 0, DROP_SETOPT, (DropParamsPtr) &wfp2 };

static DropDefRec wfdrops[] =
{
    { I_WRITABLE_BEFORE,         &wfd1 },
    { I_WRITABLE_BEFORE_OBJECT,  &wfd1 },
    { I_WRITABLE_AFTER,          &wfd2 },
    { I_WRITABLE_AFTER_OBJECT,   &wfd2 },
    {-2}
};


/* ---------------------- slider gadget definition ----------------------- */

#define  SL_FIND(field)   offsetof (SliderTemplateRec, field)

static RefDefRec slrefs[] =
{
    { REF_END }
};

static FlagFldRec slf1 =
    { I_SLIDER_INTERACTIVE, SLIDER_DRAGGABLE, TRUE };
static FlagFldRec slf2 =
    { I_SLIDER_DISPLAY, SLIDER_DRAGGABLE, FALSE };
static FlagFldRec slf3 =
    { I_SLIDER_VERTICAL, SLIDER_VERTICAL, TRUE };
static FlagFldRec slf4 =
    { I_SLIDER_HORIZONTAL, SLIDER_VERTICAL, FALSE };
static ColourFldRec slf5 =
    { I_SLIDER_BARCOLOUR, SLIDER_BARCOLOUR, SLIDER_BARCOLOURSHIFT };
static ColourFldRec slf6 =
    { I_SLIDER_BACKCOLOUR, SLIDER_BACKCOLOUR, SLIDER_BACKCOLOURSHIFT };
static BitsFldRec slf7 =
    { I_SLIDER_DELIVER_NONE,
      SLIDER_GENERATEVALUECHANGEDOPTION,
      SLIDER_GENERATEVALUECHANGEDNEVER };
static BitsFldRec slf8 =
    { I_SLIDER_DELIVER_ENDDRAG,
      SLIDER_GENERATEVALUECHANGEDOPTION,
      SLIDER_GENERATEVALUECHANGEDENDOFDRAG };
static BitsFldRec slf9 =
    { I_SLIDER_DELIVER_CONT,
      SLIDER_GENERATEVALUECHANGEDOPTION,
      SLIDER_GENERATEVALUECHANGEDCONTINUOUSLY };
static IntegerFldRec slf10 =
    { I_SLIDER_MINIMUM, HDR_SIZE + SL_FIND(lowerbound), FALSE };
static IntegerFldRec slf11 =
    { I_SLIDER_MAXIMUM, HDR_SIZE + SL_FIND(upperbound), FALSE };
static IntegerFldRec slf12 =
    { I_SLIDER_INITIAL, HDR_SIZE + SL_FIND(initialvalue), FALSE };
static IntegerFldRec slf13 =
    { I_SLIDER_STEPSIZE, HDR_SIZE + SL_FIND(stepsize), FALSE };

static FieldDefRec slfields[] =
{
    { FLD_FLAG,             (FldDefPtr) &slf1 },
    { FLD_FLAG,             (FldDefPtr) &slf2 },
    { FLD_FLAG,             (FldDefPtr) &slf3 },
    { FLD_FLAG,             (FldDefPtr) &slf4 },
    { FLD_COLOUR,           (FldDefPtr) &slf5 },
    { FLD_COLOUR,           (FldDefPtr) &slf6 },
    { FLD_BITS,             (FldDefPtr) &slf7 },
    { FLD_BITS,             (FldDefPtr) &slf8 },
    { FLD_BITS,             (FldDefPtr) &slf9 },
    { FLD_INTEGER,          (FldDefPtr) &slf10 },
    { FLD_INTEGER,          (FldDefPtr) &slf11 },
    { FLD_INTEGER,          (FldDefPtr) &slf12 },
    { FLD_INTEGER,          (FldDefPtr) &slf13 },
    { FLD_END, NULL}
};

static ColourClickRec sla1 =
    { I_SLIDER_BARCOLOUR, I_SLIDER_BARCOLOUR_POPUP, FALSE };
static ColourClickRec sla2 =
    { I_SLIDER_BACKCOLOUR, I_SLIDER_BACKCOLOUR_POPUP, FALSE };

static ClickDefRec slclicks[] =
{
    { I_SLIDER_INTERACTIVE,        ACT_RADIO },
    { I_SLIDER_DISPLAY,            ACT_RADIO },
    { I_SLIDER_HORIZONTAL,         ACT_RADIO },
    { I_SLIDER_VERTICAL,           ACT_RADIO },
    { I_SLIDER_DELIVER_NONE,       ACT_RADIO },
    { I_SLIDER_DELIVER_CONT,       ACT_RADIO },
    { I_SLIDER_DELIVER_ENDDRAG,    ACT_RADIO },
    { I_SLIDER_BARCOLOUR_POPUP,    ACT_COLOUR,     (ClickParamsPtr) &sla1 },
    { I_SLIDER_BACKCOLOUR_POPUP,   ACT_COLOUR,     (ClickParamsPtr) &sla2 },
                                 { 0, ACT_END }
};

static DropDefRec sldrops[] =
{
    {-2}
};


/* --------------------- draggable gadget definition --------------------- */

#define  DG_FIND(field)   offsetof (DraggableTemplateRec, field)

static RefDefRec dgrefs[] =
{
    { REF_MSG, DG_FIND(text), FALSE },
    { REF_STR, DG_FIND(sprite), FALSE },
    { REF_END }
};

static MandAssStrFldRec dgf1 =
    { I_DRAGGABLE_TEXT, I_DRAGGABLE_TEXTMAX,
      I_DRAGGABLE_TEXTMAX_ADJ_UP, I_DRAGGABLE_TEXTMAX_ADJ_DOWN,
      HDR_SIZE + DG_FIND(text), HDR_SIZE + DG_FIND(maxtextlen) };
static FlagFldRec dgf2 =
    { I_DRAGGABLE_HASTEXT, DRAGGABLE_TEXT, TRUE };
static MandAssStrFldRec dgf3 =
    { I_DRAGGABLE_SPRITE, I_DRAGGABLE_SPRITEMAX,
      I_DRAGGABLE_SPRITEMAX_ADJ_UP, I_DRAGGABLE_SPRITEMAX_ADJ_DOWN,
      HDR_SIZE + DG_FIND(sprite), HDR_SIZE + DG_FIND(maxspritelen) };
static FlagFldRec dgf4 =
    { I_DRAGGABLE_HASSPRITE, DRAGGABLE_SPRITE, TRUE };
static FlagFldRec dgf5 =
    { I_DRAGGABLE_DELIVER_START, DRAGGABLE_GENERATEDRAGSTARTED, TRUE };
static FlagFldRec dgf6 =
    { I_DRAGGABLE_USETOOLBOXIDS, DRAGGABLE_USETOOLBOXIDS, TRUE };
static BitsFldRec dgf7 =
    { I_DRAGGABLE_DRAG, DRAGGABLE_TYPE, DRAGGABLE_DRAG };
static BitsFldRec dgf8 =
    { I_DRAGGABLE_CLICKDRAG, DRAGGABLE_TYPE, DRAGGABLE_CLICKDRAG };
static BitsFldRec dgf9 =
    { I_DRAGGABLE_DOUBLECLICKDRAG,
      DRAGGABLE_TYPE, DRAGGABLE_DOUBLECLICKDRAG };
static FlagFldRec dgf10 =
    { I_DRAGGABLE_DROPSHADOW, DRAGGABLE_HASDROPSHADOW, TRUE };
static FlagFldRec dgf11 =
    { I_DRAGGABLE_DITHERED, DRAGGABLE_NOTDITHERED, FALSE };

static FieldDefRec dgfields[] =
{
    { FLD_MAND_ASS_STR,     (FldDefPtr) &dgf1 },
    { FLD_FLAG,             (FldDefPtr) &dgf2 },
    { FLD_MAND_ASS_STR,     (FldDefPtr) &dgf3 },
    { FLD_FLAG,             (FldDefPtr) &dgf4 },
    { FLD_FLAG,             (FldDefPtr) &dgf5 },
    { FLD_FLAG,             (FldDefPtr) &dgf6 },
    { FLD_BITS,             (FldDefPtr) &dgf7 },
    { FLD_BITS,             (FldDefPtr) &dgf8 },
    { FLD_BITS,             (FldDefPtr) &dgf9 },
    { FLD_FLAG,             (FldDefPtr) &dgf10},
    { FLD_FLAG,             (FldDefPtr) &dgf11},
    { FLD_END, NULL}
};

static AdjustClickRec dga1 =
    { I_DRAGGABLE_TEXT, I_DRAGGABLE_TEXTMAX, TRUE,  1, 10 };
static AdjustClickRec dga2 =
    { I_DRAGGABLE_TEXT, I_DRAGGABLE_TEXTMAX, FALSE, 1, 10 };
static AdjustClickRec dga3 =
    { I_DRAGGABLE_SPRITE, I_DRAGGABLE_SPRITEMAX, TRUE,  1, 10 };
static AdjustClickRec dga4 =
    { I_DRAGGABLE_SPRITE, I_DRAGGABLE_SPRITEMAX, FALSE, 1, 10 };

static ClickDefRec dgclicks[] =
{
    { I_DRAGGABLE_TEXTMAX_ADJ_UP,     ACT_ADJUST, (ClickParamsPtr) &dga1 },
    { I_DRAGGABLE_TEXTMAX_ADJ_DOWN,   ACT_ADJUST, (ClickParamsPtr) &dga2 },
    { I_DRAGGABLE_SPRITEMAX_ADJ_UP,   ACT_ADJUST, (ClickParamsPtr) &dga3 },
    { I_DRAGGABLE_SPRITEMAX_ADJ_DOWN, ACT_ADJUST, (ClickParamsPtr) &dga4 },
    { I_DRAGGABLE_DRAG,               ACT_RADIO },
    { I_DRAGGABLE_CLICKDRAG,          ACT_RADIO },
    { I_DRAGGABLE_DOUBLECLICKDRAG,    ACT_RADIO },
                             { 0, ACT_END }
};

static DropDefRec dgdrops[] =
{
    {-2}
};


/* -------------------- popup menu gadget definition --------------------- */

#define  PU_FIND(field)   offsetof (PopUpTemplateRec, field)

static RefDefRec purefs[] =
{
    { REF_STR, PU_FIND(menu), TRUE },
    { REF_END }
};

static MandConstStrFldRec puf1 =
    { I_POPUPMENU_MENU, HDR_SIZE + PU_FIND(menu) };
static FlagFldRec puf2 =
    { I_POPUPMENU_DELIVEREVENT, POPUP_GENERATEABOUTTOBESHOWN, TRUE };

static FieldDefRec pufields[] =
{
    { FLD_MAND_CONST_STR,     (FldDefPtr) &puf1 },
    { FLD_FLAG,               (FldDefPtr) &puf2 },
    { FLD_END, NULL}
};

static ClickDefRec puclicks[] =
{
    { 0, ACT_END }
};

static SetDropRec pup1 = { I_POPUPMENU_MENU };

static DropDetailsRec pud1 =
    { OBJECT_DROP, -1, DROP_SET, (DropParamsPtr) &pup1 };

static DropDefRec pudrops[] =
{
    { I_POPUPMENU_MENU,       &pud1 },
    { I_POPUPMENU_SHOW_MENU,  &pud1 },
    {-2}
};


/* ------------------ adjuster arrow gadget definition ------------------- */

#define  AJ_FIND(field)   offsetof (AdjusterTemplateRec, field)

static RefDefRec ajrefs[] =
{
    { REF_END }
};

static BitsFldRec ajf1 =
    { I_ADJARROW_DIR_LEFT,
      ADJUSTER_ADJUSTMENT | ADJUSTER_ORIENTATION,
      ADJUSTER_LEFTRIGHT + ADJUSTER_DECREMENT };
static BitsFldRec ajf2 =
    { I_ADJARROW_DIR_RIGHT,
      ADJUSTER_ADJUSTMENT | ADJUSTER_ORIENTATION,
      ADJUSTER_LEFTRIGHT + ADJUSTER_INCREMENT };
static BitsFldRec ajf3 =
    { I_ADJARROW_DIR_UP,
      ADJUSTER_ADJUSTMENT | ADJUSTER_ORIENTATION,
      ADJUSTER_UPDOWN + ADJUSTER_INCREMENT };
static BitsFldRec ajf4 =
    { I_ADJARROW_DIR_DOWN,
      ADJUSTER_ADJUSTMENT | ADJUSTER_ORIENTATION,
      ADJUSTER_UPDOWN + ADJUSTER_DECREMENT };

static FieldDefRec ajfields[] =
{
    { FLD_BITS,     (FldDefPtr) &ajf1 },
    { FLD_BITS,     (FldDefPtr) &ajf2 },
    { FLD_BITS,     (FldDefPtr) &ajf3 },
    { FLD_BITS,     (FldDefPtr) &ajf4 },
    { FLD_END, NULL}
};

static ClickDefRec ajclicks[] =
{
    { I_ADJARROW_DIR_LEFT,   ACT_RADIO },
    { I_ADJARROW_DIR_RIGHT,  ACT_RADIO },
    { I_ADJARROW_DIR_UP,     ACT_RADIO },
    { I_ADJARROW_DIR_DOWN,   ACT_RADIO },
                        { 0, ACT_END }
};

static DropDefRec ajdrops[] =
{
    {-2}
};


/* -------------------- number range gadget definition ------------------- */

#define  NR_FIND(field)   offsetof (NumberRangeTemplateRec, field)

static RefDefRec nrrefs[] =
{
    { REF_END }
};

static FlagFldRec nrf1 =
    { I_NUMBERRANGE_DELIVEREVENTS, NUMBERRANGE_GENERATEVALUECHANGED, TRUE };
static IntegerFldRec nrf2 =
    { I_NUMBERRANGE_MINIMUM, HDR_SIZE + NR_FIND(lowerbound), FALSE };
static IntegerFldRec nrf3 =
    { I_NUMBERRANGE_MAXIMUM, HDR_SIZE + NR_FIND(upperbound), FALSE };
static IntegerFldRec nrf4 =
    { I_NUMBERRANGE_INITIAL, HDR_SIZE + NR_FIND(initialvalue), FALSE };
static IntegerFldRec nrf5 =
    { I_NUMBERRANGE_PRECISION, HDR_SIZE + NR_FIND(precision), FALSE };
static IntegerFldRec nrf6 =
    { I_NUMBERRANGE_STEPSIZE, HDR_SIZE + NR_FIND(stepsize), FALSE };
static FlagFldRec nrf7 =
    { I_NUMBERRANGE_HASDISPLAY, NUMBERRANGE_NONUMERICALDISPLAY, FALSE };
static FlagFldRec nrf8 =
    { I_NUMBERRANGE_DISPLAY, NUMBERRANGE_WRITABLE, FALSE };
static FlagFldRec nrf9 =
    { I_NUMBERRANGE_WRITABLE, NUMBERRANGE_WRITABLE, TRUE };
static BitsFldRec nrf10 =
    { I_NUMBERRANGE_JUSTIFY_LEFT,
      NUMBERRANGE_JUSTIFICATION, NUMBERRANGE_LEFTJUSTIFY };
static BitsFldRec nrf11 =
    { I_NUMBERRANGE_JUSTIFY_CENTRE,
      NUMBERRANGE_JUSTIFICATION, NUMBERRANGE_CENTRED };
static BitsFldRec nrf12 =
    { I_NUMBERRANGE_JUSTIFY_RIGHT,
      NUMBERRANGE_JUSTIFICATION, NUMBERRANGE_RIGHTJUSTIFY };
static FlagFldRec nrf13 =
    { I_NUMBERRANGE_HASADJUSTERS, NUMBERRANGE_ADJUSTERS, TRUE };
static ColourFldRec nrf14 =
    { I_NUMBERRANGE_BARCOLOUR,
      NUMBERRANGE_SLIDERBARCOLOUR, NUMBERRANGE_SLIDERBARCOLOURSHIFT };
static ColourFldRec nrf15 =
    { I_NUMBERRANGE_BACKCOLOUR,
      NUMBERRANGE_SLIDERBACKCOLOUR, NUMBERRANGE_SLIDERBACKCOLOURSHIFT };
static LinkFldRec nrf16 =
    { I_NUMBERRANGE_BEFORE, I_NUMBERRANGE_BEFORE_OBJECT,
      HDR_SIZE + NR_FIND(before) };
static LinkFldRec nrf17 =
    { I_NUMBERRANGE_AFTER, I_NUMBERRANGE_AFTER_OBJECT,
      HDR_SIZE + NR_FIND(after) };
static IntegerFldRec nrf18 =
    { I_NUMBERRANGE_DISPLAY_WIDTH,
      HDR_SIZE + NR_FIND(displaylength), FALSE };

static FieldDefRec nrfields[] =
{
    { FLD_FLAG,             (FldDefPtr) &nrf1 },
    { FLD_INTEGER,          (FldDefPtr) &nrf2 },
    { FLD_INTEGER,          (FldDefPtr) &nrf3 },
    { FLD_INTEGER,          (FldDefPtr) &nrf4 },
    { FLD_INTEGER,          (FldDefPtr) &nrf5 },
    { FLD_INTEGER,          (FldDefPtr) &nrf6 },
    { FLD_FLAG,             (FldDefPtr) &nrf7 },
    { FLD_FLAG,             (FldDefPtr) &nrf8 },
    { FLD_FLAG,             (FldDefPtr) &nrf9 },
    { FLD_BITS,             (FldDefPtr) &nrf10 },
    { FLD_BITS,             (FldDefPtr) &nrf11 },
    { FLD_BITS,             (FldDefPtr) &nrf12 },
    { FLD_FLAG,             (FldDefPtr) &nrf13 },
    { FLD_COLOUR,           (FldDefPtr) &nrf14 },
    { FLD_COLOUR,           (FldDefPtr) &nrf15 },
    { FLD_LINK,             (FldDefPtr) &nrf16 },
    { FLD_LINK,             (FldDefPtr) &nrf17 },
    { FLD_INTEGER,          (FldDefPtr) &nrf18 },
    { FLD_END, NULL}
};

static ToggleFadeClickRec nra1 = { I_NUMBERRANGE_BEFORE_OBJECT };
static ToggleFadeClickRec nra2 = { I_NUMBERRANGE_AFTER_OBJECT };
static ColourClickRec nra3 =
    { I_NUMBERRANGE_BARCOLOUR, I_NUMBERRANGE_BARCOLOUR_POPUP, FALSE };
static ColourClickRec nra4 =
    { I_NUMBERRANGE_BACKCOLOUR, I_NUMBERRANGE_BACKCOLOUR_POPUP, FALSE };
static SpecialClickRec nra5 = { gadget_nr_numerical };
static SpecialClickRec nra6 = { gadget_nr_display };
static SpecialClickRec nra7 = { gadget_nr_writable };
static SpecialClickRec nra8 = { gadget_nr_slider };

static ClickDefRec nrclicks[] =
{
    { I_NUMBERRANGE_DISPLAY,          ACT_RADIO },
    { I_NUMBERRANGE_WRITABLE,         ACT_RADIO },
    { I_NUMBERRANGE_JUSTIFY_LEFT,     ACT_RADIO },
    { I_NUMBERRANGE_JUSTIFY_CENTRE,   ACT_RADIO },
    { I_NUMBERRANGE_JUSTIFY_RIGHT,    ACT_RADIO },
    { I_NUMBERRANGE_LEFT,             ACT_RADIO },
    { I_NUMBERRANGE_RIGHT,            ACT_RADIO },
    { I_NUMBERRANGE_BEFORE,         ACT_TOGGLEFADE, (ClickParamsPtr) &nra1 },
    { I_NUMBERRANGE_AFTER,          ACT_TOGGLEFADE, (ClickParamsPtr) &nra2 },
    { I_NUMBERRANGE_BARCOLOUR_POPUP,  ACT_COLOUR,   (ClickParamsPtr) &nra3 },
    { I_NUMBERRANGE_BACKCOLOUR_POPUP, ACT_COLOUR,   (ClickParamsPtr) &nra4 },
    { I_NUMBERRANGE_HASDISPLAY,       ACT_SPECIAL,  (ClickParamsPtr) &nra5 },
    { I_NUMBERRANGE_DISPLAY,          ACT_SPECIAL,  (ClickParamsPtr) &nra6 },
    { I_NUMBERRANGE_WRITABLE,         ACT_SPECIAL,  (ClickParamsPtr) &nra7 },
    { I_NUMBERRANGE_HASSLIDER,        ACT_SPECIAL,  (ClickParamsPtr) &nra8 },
                                 { 0, ACT_END }
};

static SetOptDropRec nrp1 =
    { I_NUMBERRANGE_BEFORE_OBJECT, I_NUMBERRANGE_BEFORE };
static SetOptDropRec nrp2 =
    { I_NUMBERRANGE_AFTER_OBJECT, I_NUMBERRANGE_AFTER };

static DropDetailsRec nrd1 =
    { GADGET_DROP, 0, DROP_SETOPT, (DropParamsPtr) &nrp1 };
static DropDetailsRec nrd2 =
    { GADGET_DROP, 0, DROP_SETOPT, (DropParamsPtr) &nrp2 };

static DropDefRec nrdrops[] =
{
    { I_NUMBERRANGE_BEFORE,         &nrd1 },
    { I_NUMBERRANGE_BEFORE_OBJECT,  &nrd1 },
    { I_NUMBERRANGE_AFTER,          &nrd2 },
    { I_NUMBERRANGE_AFTER_OBJECT,   &nrd2 },
    {-2}
};


/* --------------------- string set gadget definition -------------------- */

#define  SS_FIND(field)   offsetof (StringSetTemplateRec, field)

static RefDefRec ssrefs[] =
{
    { REF_MSG, SS_FIND(stringset), TRUE },
    { REF_MSG, SS_FIND(title), FALSE },
    { REF_MSG, SS_FIND(initialselectedstring), TRUE },
    { REF_MSG, SS_FIND(allowable), FALSE },
    { REF_END }
};

static OptConstStrFldRec ssf1 =
    { I_STRINGSET_HASTITLE, I_STRINGSET_TITLE, HDR_SIZE + SS_FIND(title) };
static MandConstStrFldRec ssf2 =
    { I_STRINGSET_STRINGS, HDR_SIZE + SS_FIND(stringset) };
static MandConstStrFldRec ssf3 =
    { I_STRINGSET_INITIAL, HDR_SIZE + SS_FIND(initialselectedstring) };
static LengthFldRec ssf4 =
    { I_STRINGSET_INITIALMAX,
      HDR_SIZE + SS_FIND(maxselectedstringlen),
      gadget_ss_min_maxselectedstringlen };
static FlagFldRec ssf5 =
    { I_STRINGSET_HASDISPLAY, STRINGSET_NODISPLAY, FALSE };
static FlagFldRec ssf6 =
    { I_STRINGSET_DISPLAY, STRINGSET_WRITABLE, FALSE };
static FlagFldRec ssf7 =
    { I_STRINGSET_WRITABLE, STRINGSET_WRITABLE, TRUE };
static FlagFldRec ssf8 =
    { I_STRINGSET_DELIVERVALUE, STRINGSET_GENERATEVALUECHANGED, TRUE };
static FlagFldRec ssf9 =
    { I_STRINGSET_DELIVERSHOW, STRINGSET_GENERATEABOUTTOBESHOWN, TRUE };
static BitsFldRec ssf10 =
    { I_STRINGSET_JUSTIFY_LEFT,
      STRINGSET_JUSTIFICATION, STRINGSET_LEFTJUSTIFY };
static BitsFldRec ssf11 =
    { I_STRINGSET_JUSTIFY_CENTRE,
      STRINGSET_JUSTIFICATION, STRINGSET_CENTRED };
static BitsFldRec ssf12 =
    { I_STRINGSET_JUSTIFY_RIGHT,
      STRINGSET_JUSTIFICATION, STRINGSET_RIGHTJUSTIFY };
static AllowableFldRec ssf13 =
    { I_STRINGSET_HASALLOWED,
      I_STRINGSET_ALLOWED_ALPHA_LC, I_STRINGSET_ALLOWED_ALPHA_UC,
      I_STRINGSET_ALLOWED_NUMERIC,
      I_STRINGSET_ALLOWED_OTHER, I_STRINGSET_ALLOWED,
      I_STRINGSET_ALLOWEDMAX,
      I_STRINGSET_ALLOWEDMAX_ADJ_UP, I_STRINGSET_ALLOWEDMAX_ADJ_DOWN,
      HDR_SIZE + SS_FIND(allowable), HDR_SIZE + SS_FIND(maxallowablelen) };
static LinkFldRec ssf14 =
    { I_STRINGSET_BEFORE, I_STRINGSET_BEFORE_OBJECT,
      HDR_SIZE + SS_FIND(before) };
static LinkFldRec ssf15 =
    { I_STRINGSET_AFTER, I_STRINGSET_AFTER_OBJECT,
      HDR_SIZE + SS_FIND(after) };

static FieldDefRec ssfields[] =
{
    { FLD_OPT_CONST_STR,    (FldDefPtr) &ssf1 },
    { FLD_MAND_CONST_STR,   (FldDefPtr) &ssf2 },
    { FLD_MAND_CONST_STR,   (FldDefPtr) &ssf3 },
    { FLD_LENGTH,           (FldDefPtr) &ssf4 },
    { FLD_FLAG,             (FldDefPtr) &ssf5 },
    { FLD_FLAG,             (FldDefPtr) &ssf6 },
    { FLD_FLAG,             (FldDefPtr) &ssf7 },
    { FLD_FLAG,             (FldDefPtr) &ssf8 },
    { FLD_FLAG,             (FldDefPtr) &ssf9 },
    { FLD_BITS,             (FldDefPtr) &ssf10 },
    { FLD_BITS,             (FldDefPtr) &ssf11 },
    { FLD_BITS,             (FldDefPtr) &ssf12 },
    { FLD_ALLOWABLE,        (FldDefPtr) &ssf13 },
    { FLD_LINK,             (FldDefPtr) &ssf14 },
    { FLD_LINK,             (FldDefPtr) &ssf15 },
    { FLD_END, NULL}
};

static ToggleFadeClickRec ssa1 = { I_STRINGSET_BEFORE_OBJECT };
static ToggleFadeClickRec ssa2 = { I_STRINGSET_AFTER_OBJECT };
static SpecialClickRec ssa3 = { gadget_ss_numerical };
static SpecialClickRec ssa4 = { gadget_ss_display };
static SpecialClickRec ssa5 = { gadget_ss_writable };
static AdjustClickRec ssa6 =
    { I_STRINGSET_INITIAL, I_STRINGSET_INITIALMAX, TRUE,  1, 10 };
static AdjustClickRec ssa7 =
    { I_STRINGSET_INITIAL, I_STRINGSET_INITIALMAX, FALSE, 1, 10 };
static AdjustClickRec ssa8 =
    { I_STRINGSET_ALLOWED, I_STRINGSET_ALLOWEDMAX, TRUE,  1, 10 };
static AdjustClickRec ssa9 =
    { I_STRINGSET_ALLOWED, I_STRINGSET_ALLOWEDMAX, FALSE, 1, 10 };
static AllowClickRec ssa10 =
    { I_STRINGSET_ALLOWED_ALPHA_LC, I_STRINGSET_ALLOWED_ALPHA_UC,
      I_STRINGSET_ALLOWED_NUMERIC,
      I_STRINGSET_ALLOWED_OTHER, I_STRINGSET_ALLOWED };
static ToggleFadeClickRec ssa11 = { I_STRINGSET_TITLE };
static ToggleFadeClickRec ssa12 = { I_STRINGSET_ALLOWED };

static ClickDefRec ssclicks[] =
{
    { I_STRINGSET_DISPLAY,              ACT_RADIO },
    { I_STRINGSET_WRITABLE,             ACT_RADIO },
    { I_STRINGSET_BEFORE,          ACT_TOGGLEFADE, (ClickParamsPtr) &ssa1 },
    { I_STRINGSET_AFTER,           ACT_TOGGLEFADE, (ClickParamsPtr) &ssa2 },
    { I_STRINGSET_HASDISPLAY,         ACT_SPECIAL, (ClickParamsPtr) &ssa3 },
    { I_STRINGSET_DISPLAY,            ACT_SPECIAL, (ClickParamsPtr) &ssa4 },
    { I_STRINGSET_WRITABLE,           ACT_SPECIAL, (ClickParamsPtr) &ssa5 },
    { I_STRINGSET_INITIALMAX_ADJ_UP,   ACT_ADJUST, (ClickParamsPtr) &ssa6 },
    { I_STRINGSET_INITIALMAX_ADJ_DOWN, ACT_ADJUST, (ClickParamsPtr) &ssa7 },
    { I_STRINGSET_JUSTIFY_LEFT,     ACT_RADIO },
    { I_STRINGSET_JUSTIFY_CENTRE,   ACT_RADIO },
    { I_STRINGSET_JUSTIFY_RIGHT,    ACT_RADIO },
    { I_STRINGSET_ALLOWEDMAX_ADJ_UP,   ACT_ADJUST, (ClickParamsPtr) &ssa8 },
    { I_STRINGSET_ALLOWEDMAX_ADJ_DOWN, ACT_ADJUST, (ClickParamsPtr) &ssa9 },
    { I_STRINGSET_HASALLOWED,           ACT_ALLOW, (ClickParamsPtr) &ssa10 },
    { I_STRINGSET_HASTITLE,        ACT_TOGGLEFADE, (ClickParamsPtr) &ssa11 },
    { I_STRINGSET_ALLOWED_OTHER,   ACT_TOGGLEFADE, (ClickParamsPtr) &ssa12 },
                                     { 0, ACT_END }
};

static SetOptDropRec ssp1 =
    { I_STRINGSET_BEFORE_OBJECT, I_STRINGSET_BEFORE };
static SetOptDropRec ssp2 =
    { I_STRINGSET_AFTER_OBJECT, I_STRINGSET_AFTER };

static DropDetailsRec ssd1 =
    { GADGET_DROP, 0, DROP_SETOPT, (DropParamsPtr) &ssp1 };
static DropDetailsRec ssd2 =
    { GADGET_DROP, 0, DROP_SETOPT, (DropParamsPtr) &ssp2 };

static DropDefRec ssdrops[] =
{
    { I_STRINGSET_BEFORE,         &ssd1 },
    { I_STRINGSET_BEFORE_OBJECT,  &ssd1 },
    { I_STRINGSET_AFTER,          &ssd2 },
    { I_STRINGSET_AFTER_OBJECT,   &ssd2 },
    {-2}
};


/* ---------------------- button gadget definition ----------------------- */

#define  WI_FIND(field)   offsetof (WimpIconTemplateRec, field)

static RefDefRec wirefs[] =
{
    { REF_MSG, WI_FIND(value), TRUE },
    { REF_STR, WI_FIND(validation), TRUE },
    { REF_END }
};

static XFlagFldRec wif1 =
    { I_WIMPICON_TEXT, HDR_SIZE + WI_FIND(buttonflags),
      IF_TEXT, TRUE };
static XFlagFldRec wif2 =
    { I_WIMPICON_SPRITE, HDR_SIZE + WI_FIND(buttonflags),
      IF_SPRITE, TRUE };
static MandAssStrFldRec wif3 =
    { I_WIMPICON_VALUE, I_WIMPICON_VALUEMAX,
      I_WIMPICON_VALUEMAX_ADJ_UP, I_WIMPICON_VALUEMAX_ADJ_DOWN,
      HDR_SIZE + WI_FIND(value), HDR_SIZE + WI_FIND(maxvalue) };
static MandAssStrFldRec wif4 =
    { I_WIMPICON_VALID, I_WIMPICON_VALIDMAX,
      I_WIMPICON_VALIDMAX_ADJ_UP, I_WIMPICON_VALIDMAX_ADJ_DOWN,
      HDR_SIZE + WI_FIND(validation), HDR_SIZE + WI_FIND(maxvalidation) };
static FlagFldRec wif5 =
    { I_WIMPICON_CLIENTSPRITES, WIMPICON_TASKSPRITEAREA, TRUE };
static FlagFldRec wif6 =
    { I_WIMPICON_MENUCLICKS, WIMPICON_RETURNMENUCLICKS, TRUE };
static XPackedFldRec wif7 =
    { I_WIMPICON_BUTTON, HDR_SIZE + WI_FIND(buttonflags),
      IF_TYPE_MASK << IF_TYPE_SHFT, IF_TYPE_SHFT };
static XPackedFldRec wif8 =
    { I_WIMPICON_ESG, HDR_SIZE + WI_FIND(buttonflags),
      IF_ESG_MASK << IF_ESG_SHFT, IF_ESG_SHFT };
static XColourFldRec wif9 =
    { I_WIMPICON_FG, HDR_SIZE + WI_FIND(buttonflags),
      IF_FG_MASK << IF_FG_SHFT, IF_FG_SHFT };
static XColourFldRec wif10 =
    { I_WIMPICON_BG, HDR_SIZE + WI_FIND(buttonflags),
      IF_BG_MASK << IF_BG_SHFT, IF_BG_SHFT };
static XFlagFldRec wif11 =
    { I_WIMPICON_BORDER, HDR_SIZE + WI_FIND(buttonflags),
      IF_BORDER, TRUE };
static XFlagFldRec wif12 =
    { I_WIMPICON_HCENTRE, HDR_SIZE + WI_FIND(buttonflags),
      IF_HCENT, TRUE };
static XFlagFldRec wif13 =
    { I_WIMPICON_VCENTRE, HDR_SIZE + WI_FIND(buttonflags),
      IF_VCENT, TRUE };
static XFlagFldRec wif14 =
    { I_WIMPICON_FILLED, HDR_SIZE + WI_FIND(buttonflags),
      IF_FILLED, TRUE };
static XFlagFldRec wif15 =
    { I_WIMPICON_ADJUST, HDR_SIZE + WI_FIND(buttonflags),
      IF_ADJUST, TRUE };
static XFlagFldRec wif16 =
    { I_WIMPICON_HALFSIZE, HDR_SIZE + WI_FIND(buttonflags),
      IF_HALFSIZE, TRUE };
static XFlagFldRec wif17 =
    { I_WIMPICON_NEEDSHELP, HDR_SIZE + WI_FIND(buttonflags),
      IF_HELP, TRUE };
static XFlagFldRec wif18 =
    { I_WIMPICON_RIGHT, HDR_SIZE + WI_FIND(buttonflags),
      IF_RJUST, TRUE };

static FieldDefRec wifields[] =
{
    { FLD_XFLAG,              (FldDefPtr) &wif1 },
    { FLD_XFLAG,              (FldDefPtr) &wif2 },
    { FLD_MAND_ASS_STR,       (FldDefPtr) &wif3 },
    { FLD_MAND_ASS_STR,       (FldDefPtr) &wif4 },
    { FLD_FLAG,               (FldDefPtr) &wif5 },
    { FLD_FLAG,               (FldDefPtr) &wif6 },
    { FLD_XPACKED,            (FldDefPtr) &wif7 },
    { FLD_XPACKED,            (FldDefPtr) &wif8 },
    { FLD_XCOLOUR,            (FldDefPtr) &wif9 },
    { FLD_XCOLOUR,            (FldDefPtr) &wif10 },
    { FLD_XFLAG,              (FldDefPtr) &wif11 },
    { FLD_XFLAG,              (FldDefPtr) &wif12 },
    { FLD_XFLAG,              (FldDefPtr) &wif13 },
    { FLD_XFLAG,              (FldDefPtr) &wif14 },
    { FLD_XFLAG,              (FldDefPtr) &wif15 },
    { FLD_XFLAG,              (FldDefPtr) &wif16 },
    { FLD_XFLAG,              (FldDefPtr) &wif17 },
    { FLD_XFLAG,              (FldDefPtr) &wif18 },
    { FLD_END, NULL}
};

static AdjustClickRec wia1 =
    { I_WIMPICON_VALUE, I_WIMPICON_VALUEMAX, TRUE,  1, 10 };
static AdjustClickRec wia2 =
    { I_WIMPICON_VALUE, I_WIMPICON_VALUEMAX, FALSE, 1, 10 };
static AdjustClickRec wia3 =
    { I_WIMPICON_VALID, I_WIMPICON_VALIDMAX, TRUE,  1, 10 };
static AdjustClickRec wia4 =
    { I_WIMPICON_VALID, I_WIMPICON_VALIDMAX, FALSE, 1, 10 };
static AdjustClickRec wia5 = { -1, I_WIMPICON_ESG, TRUE,  1, 1 };
static AdjustClickRec wia6 = { -1, I_WIMPICON_ESG, FALSE, 1, 1 };
static ButtonClickRec wia7 = { I_WIMPICON_BUTTON, I_WIMPICON_BUTTON_POPUP };
static ColourClickRec wia8 = { I_WIMPICON_FG, I_WIMPICON_FG_POPUP, FALSE };
static ColourClickRec wia9 = { I_WIMPICON_BG, I_WIMPICON_BG_POPUP, FALSE };


static ClickDefRec wiclicks[] =
{
    { I_WIMPICON_VALUEMAX_ADJ_UP,   ACT_ADJUST, (ClickParamsPtr) &wia1 },
    { I_WIMPICON_VALUEMAX_ADJ_DOWN, ACT_ADJUST, (ClickParamsPtr) &wia2 },
    { I_WIMPICON_VALIDMAX_ADJ_UP,   ACT_ADJUST, (ClickParamsPtr) &wia3 },
    { I_WIMPICON_VALIDMAX_ADJ_DOWN, ACT_ADJUST, (ClickParamsPtr) &wia4 },
    { I_WIMPICON_ESG_ADJ_UP,        ACT_ADJUST, (ClickParamsPtr) &wia5 },
    { I_WIMPICON_ESG_ADJ_DOWN,      ACT_ADJUST, (ClickParamsPtr) &wia6 },
    { I_WIMPICON_BUTTON_POPUP,      ACT_BUTTON, (ClickParamsPtr) &wia7 },
    { I_WIMPICON_FG_POPUP,          ACT_COLOUR, (ClickParamsPtr) &wia8 },
    { I_WIMPICON_BG_POPUP,          ACT_COLOUR, (ClickParamsPtr) &wia9 },
    { 0, ACT_END }
};

static DropDefRec widrops[] =
{
    {-2}
};


/* -----------------the array of all gadget definitions ------------------ */

GadgetDefRec gadgetdefs[] =
{
    { GADGET_ACTION_BUTTON, "ActionButt", NULL, 0,
      { sizeof (ActionButtonTemplateRec), 0, abrefs },
      abfields, abclicks, abdrops,
      {
        I_ACTIONBUTT_TEXT,
        I_ACTIONBUTT_OK, I_ACTIONBUTT_CANCEL,
        I_ACTIONBUTT_ID, I_ACTIONBUTT_WINDOW,
        I_ACTIONBUTT_HASHELP, I_ACTIONBUTT_HELP, I_ACTIONBUTT_HELPMAX,
        I_ACTIONBUTT_HELPMAX_ADJ_UP, I_ACTIONBUTT_HELPMAX_ADJ_DOWN,
        I_ACTIONBUTT_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 16, 16 },
      gadget_ab_init, gadget_ab_apply
    },

    { GADGET_OPTION_BUTTON, "OptionButt", NULL, 0,
      { sizeof (OptionButtonTemplateRec), 0, obrefs },
      obfields, obclicks, obdrops,
      {
        I_OPTIONBUTT_TEXT,
        I_OPTIONBUTT_OK, I_OPTIONBUTT_CANCEL,
        I_OPTIONBUTT_ID, I_OPTIONBUTT_WINDOW,
        I_OPTIONBUTT_HASHELP, I_OPTIONBUTT_HELP, I_OPTIONBUTT_HELPMAX,
        I_OPTIONBUTT_HELPMAX_ADJ_UP, I_OPTIONBUTT_HELPMAX_ADJ_DOWN,
        I_OPTIONBUTT_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 44, 44 },
      NULL, NULL
    },

    { GADGET_LABELLED_BOX, "LabelledBox", NULL, 0,
      { sizeof (LabelledBoxTemplateRec), 0, bxrefs },
      bxfields, bxclicks, bxdrops,
      {
        I_LABELLEDBOX_TEXT,
        I_LABELLEDBOX_OK, I_LABELLEDBOX_CANCEL,
        I_LABELLEDBOX_ID, I_LABELLEDBOX_WINDOW,
        I_LABELLEDBOX_HASHELP, I_LABELLEDBOX_HELP, I_LABELLEDBOX_HELPMAX,
        I_LABELLEDBOX_HELPMAX_ADJ_UP, I_LABELLEDBOX_HELPMAX_ADJ_DOWN,
        I_LABELLEDBOX_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 44, 44 },
      gadget_bx_init, gadget_bx_apply
    },

    { GADGET_LABEL, "Label", NULL, 0,
      { sizeof (LabelTemplateRec), 0, lbrefs },
      lbfields, lbclicks, lbdrops,
      {
        I_LABEL_TEXT,
        I_LABEL_OK, I_LABEL_CANCEL,
        I_LABEL_ID, I_LABEL_WINDOW,
        I_LABEL_HASHELP, I_LABEL_HELP, I_LABEL_HELPMAX,
        I_LABEL_HELPMAX_ADJ_UP, I_LABEL_HELPMAX_ADJ_DOWN,
        I_LABEL_FADED
      },
      { ALIGNPOS_SPECIAL, (void *) (int) gadget_lb_alignpos },
      { 16, 16 },
      NULL, NULL
    },

    { GADGET_RADIO_BUTTON, "RadioButt", NULL, 0,
      { sizeof (RadioButtonTemplateRec), 0, rbrefs },
      rbfields, rbclicks, rbdrops,
      {
        I_RADIOBUTT_TEXT,
        I_RADIOBUTT_OK, I_RADIOBUTT_CANCEL,
        I_RADIOBUTT_ID, I_RADIOBUTT_WINDOW,
        I_RADIOBUTT_HASHELP, I_RADIOBUTT_HELP, I_RADIOBUTT_HELPMAX,
        I_RADIOBUTT_HELPMAX_ADJ_UP, I_RADIOBUTT_HELPMAX_ADJ_DOWN,
        I_RADIOBUTT_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 44, 44 },
      NULL, gadget_rb_apply
    },

    { GADGET_DISPLAY_FIELD, "Display", NULL, 0,
      { sizeof (DisplayFieldTemplateRec), 0, dfrefs },
      dffields, dfclicks, dfdrops,
      {
        I_DISPLAY_TEXT,
        I_DISPLAY_OK, I_DISPLAY_CANCEL,
        I_DISPLAY_ID, I_DISPLAY_WINDOW,
        I_DISPLAY_HASHELP, I_DISPLAY_HELP, I_DISPLAY_HELPMAX,
        I_DISPLAY_HELPMAX_ADJ_UP, I_DISPLAY_HELPMAX_ADJ_DOWN,
        I_DISPLAY_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 16, 16 },
      NULL, NULL
    },

    { GADGET_WRITABLE_FIELD, "Writable", NULL, 0,
      { sizeof (WritableFieldTemplateRec), 0, wfrefs },
      wffields, wfclicks, wfdrops,
      {
        I_WRITABLE_TEXT,
        I_WRITABLE_OK, I_WRITABLE_CANCEL,
        I_WRITABLE_ID, I_WRITABLE_WINDOW,
        I_WRITABLE_HASHELP, I_WRITABLE_HELP, I_WRITABLE_HELPMAX,
        I_WRITABLE_HELPMAX_ADJ_UP, I_WRITABLE_HELPMAX_ADJ_DOWN,
        I_WRITABLE_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 16, 16 },
      NULL, NULL
    },

    { GADGET_SLIDER, "Slider", NULL, 0,
      { sizeof (SliderTemplateRec), 0, slrefs },
      slfields, slclicks, sldrops,
      {
        I_SLIDER_MINIMUM,
        I_SLIDER_OK, I_SLIDER_CANCEL,
        I_SLIDER_ID, I_SLIDER_WINDOW,
        I_SLIDER_HASHELP, I_SLIDER_HELP, I_SLIDER_HELPMAX,
        I_SLIDER_HELPMAX_ADJ_UP, I_SLIDER_HELPMAX_ADJ_DOWN,
        I_SLIDER_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 32, 24 },
      NULL, gadget_sl_apply
    },

    { GADGET_DRAGGABLE, "Draggable", NULL, 0,
      { sizeof (DraggableTemplateRec), 0, dgrefs },
      dgfields, dgclicks, dgdrops,
      {
        I_DRAGGABLE_TEXT,
        I_DRAGGABLE_OK, I_DRAGGABLE_CANCEL,
        I_DRAGGABLE_ID, I_DRAGGABLE_WINDOW,
        I_DRAGGABLE_HASHELP, I_DRAGGABLE_HELP, I_DRAGGABLE_HELPMAX,
        I_DRAGGABLE_HELPMAX_ADJ_UP, I_DRAGGABLE_HELPMAX_ADJ_DOWN,
        I_DRAGGABLE_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 16, 16 },
      NULL, NULL
    },

    { GADGET_POPUP, "PopUpMenu", NULL, 0,
      { sizeof (PopUpTemplateRec), 0, purefs },
      pufields, puclicks, pudrops,
      {
        I_POPUPMENU_MENU,
        I_POPUPMENU_OK, I_POPUPMENU_CANCEL,
        I_POPUPMENU_ID, I_POPUPMENU_WINDOW,
        I_POPUPMENU_HASHELP, I_POPUPMENU_HELP, I_POPUPMENU_HELPMAX,
        I_POPUPMENU_HELPMAX_ADJ_UP, I_POPUPMENU_HELPMAX_ADJ_DOWN,
        I_POPUPMENU_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 44, 44 },
      NULL, NULL
    },

    { GADGET_ADJUSTER, "AdjArrow", NULL, 0,
      { sizeof (AdjusterTemplateRec), 0, ajrefs },
      ajfields, ajclicks, ajdrops,
      {
        I_ADJARROW_HELP,
        I_ADJARROW_OK, I_ADJARROW_CANCEL,
        I_ADJARROW_ID, I_ADJARROW_WINDOW,
        I_ADJARROW_HASHELP, I_ADJARROW_HELP, I_ADJARROW_HELPMAX,
        I_ADJARROW_HELPMAX_ADJ_UP, I_ADJARROW_HELPMAX_ADJ_DOWN,
        I_ADJARROW_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 32, 32 },
      NULL, NULL
    },

    { GADGET_NUMBER_RANGE, "NumberRange", NULL, 0,
      { sizeof (NumberRangeTemplateRec), 0, nrrefs },
      nrfields, nrclicks, nrdrops,
      {
        I_NUMBERRANGE_MINIMUM,
        I_NUMBERRANGE_OK, I_NUMBERRANGE_CANCEL,
        I_NUMBERRANGE_ID, I_NUMBERRANGE_WINDOW,
        I_NUMBERRANGE_HASHELP, I_NUMBERRANGE_HELP, I_NUMBERRANGE_HELPMAX,
        I_NUMBERRANGE_HELPMAX_ADJ_UP, I_NUMBERRANGE_HELPMAX_ADJ_DOWN,
        I_NUMBERRANGE_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 32, 32 },
      gadget_nr_init, gadget_nr_apply
    },

    { GADGET_STRING_SET, "StringSet", NULL, 0,
      { sizeof (StringSetTemplateRec), 0, ssrefs },
      ssfields, ssclicks, ssdrops,
      {
        I_STRINGSET_TITLE,
        I_STRINGSET_OK, I_STRINGSET_CANCEL,
        I_STRINGSET_ID, I_STRINGSET_WINDOW,
        I_STRINGSET_HASHELP, I_STRINGSET_HELP, I_STRINGSET_HELPMAX,
        I_STRINGSET_HELPMAX_ADJ_UP, I_STRINGSET_HELPMAX_ADJ_DOWN,
        I_STRINGSET_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 44, 44 },
      gadget_ss_init, NULL
    },

    { GADGET_WIMP_ICON, "WimpIcon", NULL, 0,
      { sizeof (WimpIconTemplateRec), 0, wirefs },
      wifields, wiclicks, widrops,
      {
        I_WIMPICON_VALUE,
        I_WIMPICON_OK, I_WIMPICON_CANCEL,
        I_WIMPICON_ID, I_WIMPICON_WINDOW,
        I_WIMPICON_HASHELP, I_WIMPICON_HELP, I_WIMPICON_HELPMAX,
        I_WIMPICON_HELPMAX_ADJ_UP, I_WIMPICON_HELPMAX_ADJ_DOWN,
        I_WIMPICON_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 4, 4 },
      NULL, gadget_wi_apply
    },

    { -1 }   /* terminates array of gadget definitions */
};


/* ------------ the prototype unknown gadget type definition ------------- */

static FieldDefRec ukfields[] =
{
    { FLD_END, NULL}
};

static SpecialXClickRec uka1 = { gadget_uk_offset };
static ToggleFadeClickRec uka2 = { I_UNKNOWN_STRING };
static ToggleFadeClickRec uka3 = { I_UNKNOWN_MESSAGE };

static ClickDefRec ukclicks[] =
{
    { I_UNKNOWN_OFFSET_ADJ_UP,     ACT_SPECIALX, (ClickParamsPtr) &uka1 },
    { I_UNKNOWN_OFFSET_ADJ_DOWN,   ACT_SPECIALX, (ClickParamsPtr) &uka1 },
    { I_UNKNOWN_HASSTRING,       ACT_TOGGLEFADE, (ClickParamsPtr) &uka2 },
    { I_UNKNOWN_HASMESSAGE,      ACT_TOGGLEFADE, (ClickParamsPtr) &uka3 },
    { 0, ACT_END }
};

static DropDefRec ukdrops[] =
{
    {-2}
};

GadgetDefRec unkgadgetdef =
    { GADGET_UNKNOWN_TYPE, "Unknown", NULL, 0,
      { 0, 0, NULL },  /* to be filled in at gadget load time */
      ukfields, ukclicks, ukdrops,
      {
        I_UNKNOWN_HELP,
        I_UNKNOWN_OK, I_UNKNOWN_CANCEL,
        I_UNKNOWN_ID, I_UNKNOWN_WINDOW,
        I_UNKNOWN_HASHELP, I_UNKNOWN_HELP, I_UNKNOWN_HELPMAX,
        I_UNKNOWN_HELPMAX_ADJ_UP, I_UNKNOWN_HELPMAX_ADJ_DOWN,
        I_UNKNOWN_FADED
      },
      { ALIGNPOS_CENTRE, ALIGNPOS_LEFT },
      { 16, 16},
      gadget_uk_init, gadget_uk_apply
    };


/* ----------------------------------------------------------------------- */
